
/**
 * 
 * 货币单位换算
 * 
 * 题目描述

记账本上记录了若干条多国货币金额，需要转换成人民币分（fen），汇总后输出。

每行记录一条金额，金额带有货币单位，格式为："数字+单位"，可能是单独元，或者单独分，或者元与分的组合。

要求将这些货币全部换算成人民币分（fen）后进行汇总，汇总结果仅保留整数，小数部分舍弃。

元和分的换算关系都是 1:100，如下：

1CNY=100fen（1元=100分）
1HKD=100cents（1港元=100港分）
1JPY=100sen（1日元=100仙）
1EUR=100eurocents（1欧元=100欧分）
1GBP=100pence（1英镑=100便士）
汇率表如下：

CNY	JPY	HKD	EUR	GBP
100	1825	123	14	12
即：100CNY = 1825JPY = 123HKD = 14EUR = 12GBP

输入描述
第一行输入为 N，N 表示记录数。

0 < N < 100
之后 N 行，每行表示一条货币记录，且该行只会是一种货币。

输出描述
将每行货币转换成人民币分（fen）后汇总求和，只保留整数部分。

输出格式只有整数数字，不带小数，不带单位。

用例
输入	1
100CNY
输出	10000
说明	100CNY转换后是10000fen，所以输出结果为10000
输入	1
3000fen
输出	3000
说明	3000fen，结果就是3000
输入	1
123HKD
输出	10000
说明	HKD与CNY的汇率关系是123:100，所以换算后，输出结果为10000
输入	2
20CNY53fen
53HKD87cents
输出	6432
说明	20元53分 + 53港元87港分，换算成人民币分后汇总，为6432

 * 
 */

import java.util.HashMap;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
  * 
  题目解析
本题的难度在于如何解析出输入字符串中的金额和单位。

对于支持正则库的语言，最好的办法是使用正则表达式：

(\d+)(CNY|JPY|HKD|EUR|GBP|fen|cents|sen|eurocents|pence)
其中

(\d+) 表示匹配多个数字
(CNY|JPY|HKD|EUR|GBP|fen|cents|sen|eurocents|pence) 表示匹配字符串CNY或JPY或HKD....
对于C语言而言，正则库很难用，所以可以使用scanf的格式化读取

scanf("%d%[a-zA-Z]", &amount, unit)
其中

%d 表示读取多个数字
%[a-zA-Z] 表示读取多个字母
剩下的就是将不同单位转换成人民币分的汇率计算工作了，如下源码中exChange记录的不同单位转成人民币分的汇率。

  */
public class 货币单位换算 {
    
    public static void main(String[] args) {

        try{

            Scanner sc = new Scanner(System.in);
            Pattern p = Pattern.compile("(\\d+)(CNY|JPY|HKD|EUR|GBP|fen|cents|sen|eurocents|pence)");
    
            HashMap<String, Double> exChange = new HashMap<>();
            exChange.put("CNY", 100.0);
            exChange.put("JPY", 100.0 / 1825 * 100);
            exChange.put("HKD", 100.0 / 123 * 100);
            exChange.put("EUR", 100.0 / 14 * 100);
            exChange.put("GBP", 100.0 / 12 * 100);
            exChange.put("fen", 1.0);
            exChange.put("cents", 100.0 / 123);
            exChange.put("sen", 100.0 / 1825);
            exChange.put("eurocents", 100.0 / 14);
            exChange.put("pence", 100.0 / 12);
    
            double ans = 0.0;
    
            int n = sc.nextInt();
            for (int i = 0; i < n; i++) {
                Matcher m = p.matcher(sc.next());
    
                while (m.find()) {
                    Double amount = Double.parseDouble(m.group(1));
                    String unit = m.group(2);
                    ans += amount * exChange.get(unit);
                }
            }
    
            System.out.println((int) ans);
    
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}
